﻿using System;
using System.ComponentModel;
using System.Runtime.Serialization;

using Sinacor.Servico.Bovespa.Ordens.Service.DataContract.Enum;
using Sinacor.Servico.Bovespa.Ordens.Service.DataContract.Response;


namespace Sinacor.Servico.Bovespa.Ordens.Service.DataContract.Request
{
    [DataContract(Namespace = "http://www.bovespa.com.br/Sinacor.Servico.Bovespa.Ordens.Service.DataContract.Response")]
    public class BaseDigitacao
    {
        #region Private
        private string _ApelidoCliente;
        private string _CodigoAgenteCustodia;
        private int? _CodigoCarteira;
        private int? _CodigoCliente;
        private int? _CodigoClienteCustodia;
        private int? _CodigoClienteLoteOrdem;
        private DateTime? _DataMovimento;
        private int? _DigitoClienteCustodia;
        private int? _DigitoVerificadorCliente;
        private string _IndicadorNaoLiquidacao;
        private string _IndicadorSistemaExterno;
        private Int64? _NumeroSequenciaDigitacao;
        private decimal? _PercentualAcrescimo;
        private decimal? _PercentualDistribuido;
        private decimal? _PrecoInformado;
        private decimal? _QuantidadeDestinadaCliente;
        private string _SituacaoCliente;
        private DataContract.Enum.TipoDistribuicao? _TipoDistribuicao;
        private DataContract.Enum.TipoLiquidacaoDistribuicao? _TipoLiquidacao;
        private bool? _UtilizaContaInvestimento;
        private decimal? _ValorDolar;
        #endregion

        #region Public
        [DataMember(IsRequired = false)]
        public string ApelidoCliente
        {
            get { return _ApelidoCliente; }
            set { _ApelidoCliente = value; }
        }

        [DataMember(IsRequired = false)]
        public string CodigoAgenteCustodia
        {
            get { return _CodigoAgenteCustodia; }
            set { _CodigoAgenteCustodia = value; }
        }

        [DataMember(IsRequired = false)]
        public int? CodigoCarteira
        {
            get { return _CodigoCarteira; }
            set { _CodigoCarteira = value; }
        }

        [DataMember(IsRequired = false)]
        public int? CodigoCliente
        {
            get { return _CodigoCliente; }
            set { _CodigoCliente = value; }
        }

        [DataMember(IsRequired = false)]
        public int? CodigoClienteCustodia
        {
            get { return _CodigoClienteCustodia; }
            set { _CodigoClienteCustodia = value; }
        }

        [DataMember(IsRequired = false)]
        public DateTime? DataMovimento
        {
            get { return _DataMovimento; }
            set { _DataMovimento = value; }
        }

        [DataMember(IsRequired = false)]
        public int? DigitoClienteCustodia
        {
            get { return _DigitoClienteCustodia; }
            set { _DigitoClienteCustodia = value; }
        }

        [DataMember(IsRequired = false)]
        public int? DigitoVerificadorCliente
        {
            get { return _DigitoVerificadorCliente; }
            set { _DigitoVerificadorCliente = value; }
        }

        [DataMember(IsRequired = false)]
        public Int64? NumeroSequenciaDigitacao
        {
            get { return _NumeroSequenciaDigitacao; }
            set { _NumeroSequenciaDigitacao = value; }
        }

        [DataMember(IsRequired = false)]
        public string SituacaoCliente
        {
            get { return _SituacaoCliente; }
            set { _SituacaoCliente = value; }
        }

        [DataMember(IsRequired = false)]
        public string IndicadorNaoLiquidacao
        {
            get { return _IndicadorNaoLiquidacao; }
            set { _IndicadorNaoLiquidacao = value; }
        }

        [DataMember(IsRequired = false)]
        public decimal? ValorDolar
        {
            get { return _ValorDolar; }
            set { _ValorDolar = value; }
        }

        [DataMember(IsRequired = false)]
        public DataContract.Enum.TipoLiquidacaoDistribuicao? TipoLiquidacao
        {
            get { return _TipoLiquidacao; }
            set { _TipoLiquidacao = value; }
        }

        [DataMember(IsRequired = false)]
        public string IndicadorSistemaExterno
        {
            get { return _IndicadorSistemaExterno; }
            set { _IndicadorSistemaExterno = value; }
        }

        [DataMember(IsRequired = false)]
        public Boolean? UtilizaContaInvestimento
        {
            get { return _UtilizaContaInvestimento; }
            set { _UtilizaContaInvestimento = value; }
        }

        [DataMember(IsRequired = false)]
        public int? CodigoClienteLoteOrdem
        {
            get { return _CodigoClienteLoteOrdem; }
            set { _CodigoClienteLoteOrdem = value; }
        }

        [DataMember(IsRequired = false)]
        public decimal? PercentualDistribuido
        {
            get { return _PercentualDistribuido; }
            set { _PercentualDistribuido = value; }
        }

        [DataMember(IsRequired = false)]
        public DataContract.Enum.TipoDistribuicao? TipoDistribuicao
        {
            get { return _TipoDistribuicao; }
            set { _TipoDistribuicao = value; }
        }

        [DataMember(IsRequired = false)]
        public decimal? QuantidadeDestinadaCliente
        {
            get { return _QuantidadeDestinadaCliente; }
            set { _QuantidadeDestinadaCliente = value; }
        }

        [DataMember(IsRequired = false)]
        public decimal? PrecoInformado
        {
            get { return _PrecoInformado; }
            set { _PrecoInformado = value; }
        }

        [DataMember(IsRequired = false)]
        public decimal? PercentualAcrescimo
        {
            get { return _PercentualAcrescimo; }
            set { _PercentualAcrescimo = value; }
        }
        #endregion
    }
}
